//
//  SDWebImage + extension.swift
//  czWB
//
//  Created by Qing on 2019/1/24.
//  Copyright © 2019年 成哥哥. All rights reserved.
//

import SDWebImage

// MARK: - 隔离网络图片方法
extension UIImageView {


    /// 隔离网络图片加载方法
    ///
    /// - Parameters:
    ///   - urlSting: urlString
    ///   - placeholderImage: 占位图像
    func cz_setImage(urlSting: String, placeholderImage: UIImage?, isAvatar: Bool) {
        
//        如果没有传入url则直接返回并设置占位图像
        guard let url = URL(string: urlSting) else {
            
            image = placeholderImage
            
            return
        }
        
        sd_setImage(with: url, placeholderImage: placeholderImage, options: []) { (imgae, _, _, _) in
            
            if isAvatar {

                self.image = self.cz_csgraphi(image: imgae, size: self.bounds.size)
            }
            
        }
    
    }

}


// MARK: - 图片性能优化,上下文绘图裁切
extension UIImageView {

    
    /// 图像性能优化方法，优化图片的圆角半径、背景颜色、圆圈线条颜色
    ///
    /// - Parameters:
    ///   - image: 传入图片
    ///   - size: 显示大小
    ///   - backColor: 背景颜色
    ///   - lineColor: 线条颜色
    /// - Returns: 返回一个已经优化好的图片
    func cz_csgraphi(image: UIImage?, size: CGSize, backColor: UIColor = UIColor.white, lineColor: UIColor = UIColor.lightGray) -> UIImage? {
        
        let rect = CGRect(origin: CGPoint(), size: size)
        
//        1.开启上下文
        UIGraphicsBeginImageContextWithOptions(rect.size, true, 0)
        
        backColor.setFill()
        UIRectFill(rect)
        
//        路径裁切，不使用圆角半径的情况下，这个方法可以把圆像裁切为圆角
        let path = UIBezierPath(ovalIn: rect)
        path.addClip()
        
        //: - FIXME: 头像圆框线条颜色，好像没有起什么用，需要修正。
        let ovalPath = UIBezierPath(ovalIn: rect)
        ovalPath.lineWidth = 2
        lineColor.setStroke()
        ovalPath.stroke()
        
//        2.绘图
        image?.draw(in: rect)
        
//        3.取得上下文
        let results = UIGraphicsGetImageFromCurrentImageContext()
//        4.关闭上下文
        UIGraphicsEndImageContext()
//        5.返回结果
        return results
        
    }
}


